Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

186
Visualizações
Express-Validator "validationResult" devuelve [objeto Objeto]

Estoy modificando el manejo de errores del middleware Express-Validator para pasar por mi middleware de manejo de errores personalizado, pero el mensaje de validationResult se resuelve en [object Object] .

Manejo de errores de Express-Validator

 const expressValidationError = (req, res, next) => { const errors = validationResult(req); if (!errors.isEmpty()) { const err = new Error(errors.array()); err.status = 400; next(err); } else { next(); } };

Middleware de manejo de errores exprés

 app.use((err, req, res, next) => { const status = err.status || 500; res.status(status).json({ error: { status: status, message: err.message || "Internal Server Error", }, }); });

Este es el resultado del objeto de error que se devuelve de validationResult :

 Result { formatter: [Function: formatter], errors: [ { value: 'b', msg: 'Username Must be Between 5 to 255 Characters Long!', param: 'username', location: 'body' } ] }

Y este es el errors.array() :

 [ { value: 'b', msg: 'Username Must be Between 5 to 255 Characters Long!', param: 'username', location: 'body' } ]

Sé que solo puedo usar res.status(400).json({ error: errors.array() }); en Express-Validator y evitar todo esto, pero preferiría que se pasara a next() y lo manejara el middleware de error.

¿Hay alguna manera de hacerlo o debo ir por el otro lado?

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Si ve el siguiente código, esto es lo que está sucediendo. Estás pasando una matriz de objetos.

 let status = new Error([{}]); console.log(status); // Error: [object Object]

Ahora, cuando verifica el objeto de validación, es algo como esto:

 // errors will be like [{ myLocation: 'body' }, { myLocation: 'query' }...]

Todo lo que tienes que hacer es una cadena:

 const expressValidationError = (req, res, next) => { const errors = validationResult(req); if (!errors.isEmpty()) { // below is only useful when you don't have array of objects // const err = new Error(errors.array().toString()); const err = new Error(errors.array().map(el => el['msg']).toString()); err.status = 400; next(err); } else { next(); } };

Agregar qué clave tiene qué error de validación:

 const expressValidationError = (req, res, next) => { const errors = validationResult(req); if (!errors.isEmpty()) { // below is only useful when you don't have array of objects // const err = new Error(errors.array().toString()); const err = new Error(errors.array().map(el => `${el[param]} - has Error: ${el['msg']}`).toString()); err.status = 400; next(err); } else { next(); } };
about 4 years ago · Juan Pablo Isaza Relatório

0

el problema no es el validador, sino que el objeto Error toma un parámetro de cadena como primer parámetro, y le está pasando un objeto (matriz), por lo tanto, el object object .

entonces JSON.stringifica el objeto:

 const err = new Error(JSON.stringify(errors.array()));
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda